/**
 *
 * @author Kenneth
 * Servlet al cual redirecciona la pagina luego de hacer el submit en la consulta
 * de clientes
 */

package modulosolicitud;

import moduloautenticacion.*;
import sistemaamd.Usuario;
import sistemaamd.ServiceResult;
import proxy.ProxySolicitud;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class srvSolicitudProcess extends HttpServlet {
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            //obtiene la variable de session
            HttpSession session = request.getSession(Boolean.TRUE);
            //crea una instancia del Proxy (o apuntador a capa 2)
            ProxySolicitud proxySolicitudAmd = new ProxySolicitud();
            //variable de resultado
            ServiceResult resultado= new ServiceResult();

            if (request.getParameterMap().containsKey("botonEnviar"))
            {
                String[] comboSolicitud=request.getParameterMap().get("comboboxIDSolicitud")[0].toString().split("-");
                int idSolicitud=Integer.parseInt(comboSolicitud[0]);
                String codigo=request.getParameterMap().get("textoCodigoSolicitud")[0];
                String[] comboProyecto=request.getParameterMap().get("comboboxIDProyecto")[0].toString().split("-");
                int idProyecto=Integer.parseInt(comboProyecto[0]);
                String[] comboPaises=request.getParameterMap().get("comboboxPaisesBeneficiados")[0].toString().split("-");
                SimpleDateFormat formatoDelTexto = new SimpleDateFormat("yyyy-MM-dd");
                Date fechaInicio=null,fechaFinal=null;
                try {
                    fechaInicio = formatoDelTexto.parse(request.getParameterMap().get("textoFechaInicio")[0].toString());
                    fechaFinal = formatoDelTexto.parse(request.getParameterMap().get("textoFechaFinalizacion")[0].toString());
                } catch (ParseException ex) {
                    ex.printStackTrace();
                    session.setAttribute("sessionError", "Fecha con mal formato");
                    //y se redirecciona a la pagina principal, con un parametro que indica que hay error
                    response.sendRedirect("enviarSolicitudDeFinanciamiento.jsp?error=true");
                }
                Usuario usuario=(Usuario)session.getAttribute("usuario");
                int idPais=Integer.parseInt(comboPaises[0]);
                String objetivos=request.getParameterMap().get("textAreaObjetivos")[0];

                //realiza la consulta de clientes en capa 2
                resultado=proxySolicitudAmd.getServicios().InsertarSolicitudParcial(idSolicitud, codigo, idProyecto, fechaInicio, fechaFinal, usuario.getId(), idPais, objetivos);

                //si hubo algun error
                if(resultado.getExisteError().booleanValue()) {
                    //se establece en sesión la descripcion del error
                    session.setAttribute("sessionError", resultado.getDescripcionError());
                    //y se redirecciona a la pagina principal, con un parametro que indica que hay error
                    response.sendRedirect("enviarSolicitudDeFinanciamiento.jsp?error=true");
                }
                else {
                    //y se redirecciona a la pantalla que muestra la tabla de clientes
                    response.sendRedirect(response.encodeRedirectURL("enviarSolicitudDeFinanciamiento.jsp") );
                }
            }

        } catch(Exception ex) {
            out.println("<html>");
            out.println("<head><title>Error</title></head>");
            out.println("<body>");
            out.println("<h1>Error</h1>");
            out.println("Error: <strong>"+ex+request.getParameter("hash") + "</strong><br>");
            out.println("</body></html>");
        } finally {
            out.close();
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
